home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / autoit / autoit-v3.2.0.1-setup.exe / Examples / Helpfile / DllCall.au3 < prev    next >
Text File  |  2006-06-17  |  3KB  |  58 lines

  1. ; *******************************************************
  2. ; Example 1 - calling the MessageBox API directly
  3. ; *******************************************************
  4.  
  5. $result = DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "Some text", "str", "Some title", "int", 0)
  6.  
  7.  
  8. ; *******************************************************
  9. ; Example 2 - calling a function that modifies parameters
  10. ; *******************************************************
  11.  
  12. $hwnd = WinGetHandle("Untitled - Notepad")
  13. $result = DllCall("user32.dll", "int", "GetWindowText", "hwnd", $hwnd, "str", "", "int", 32768)
  14. msgbox(0, "", $result[0])    ; number of chars returned
  15. msgbox(0, "", $result[2])    ; Text returned in param 2
  16.  
  17.  
  18. ; *******************************************************
  19. ; Example 3 - Show the Windows PickIconDlg
  20. ; *******************************************************
  21.  
  22. $sFileName    = @SystemDir & '\shell32.dll'
  23.  
  24. ; Create a strcuture to store the icon index
  25. $stIcon        =  DllStructCreate("int")
  26.  
  27. If @OSType = "WIN32_NT" Then
  28.     ; Convert and store the filename as a wide char string
  29.     $nBuffersize    = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "int", 0, "int", 0x00000001, "str", $sFileName, "int", -1, "ptr", 0, "int", 0)
  30.     $stString        = DLLStructCreate("byte[" & 2 * $nBuffersize[0] & "]")
  31.     DllCall("kernel32.dll", "int", "MultiByteToWideChar", "int", 0, "int", 0x00000001, "str", $sFileName, "int", -1, "ptr", DllStructGetPtr($stString), "int", $nBuffersize[0])
  32. Else
  33.     ; Win'9x
  34.     $stString        = DLLStructCreate("char[260]")
  35.     DllStructSetData($stString, 1, $sFileName)
  36. EndIf
  37.  
  38. ; Run the PickIconDlg - '62' is the ordinal value for this function
  39. DllCall("shell32.dll", "none", 62, "hwnd", 0, "ptr", DllStructGetPtr($stString), "int", DllStructGetSize($stString), "ptr", DllStructGetPtr($stIcon))
  40.  
  41. If @OSType = "WIN32_NT" Then
  42.     ; Convert the new selected filename back from a wide char string
  43.     $nBuffersize    = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "int", 0, "int", 0x00000200, "ptr", DllStructGetPtr($stString), "int", -1, "ptr", 0, "int", 0, "ptr", 0, "ptr", 0)
  44.     $stFile            = DLLStructCreate("char[" & $nBuffersize[0] & "]")
  45.     DllCall("kernel32.dll", "int", "WideCharToMultiByte", "int", 0, "int", 0x00000200, "ptr", DllStructGetPtr($stString), "int", -1, "ptr", DllStructGetPtr($stFile), "int", $nBuffersize[0], "ptr", 0, "ptr", 0)
  46.     $sFileName        = DllStructGetData($stFile, 1)
  47. Else
  48.     $sFileName        = DllStructGetData($stString, 1)
  49. EndIf
  50.  
  51. $nIconIndex            = DllStructGetData($stIcon, 1)
  52.  
  53. ; Show the new filename and icon index
  54. Msgbox(0, "Info", "Last selected file: " & $sFileName & @LF & "Icon-Index: " & $nIconIndex)
  55.  
  56. $stBuffer    = 0
  57. $stFile        = 0
  58. $stIcon        = 0